import { init, getInstance } from 'ts-indexdb'
// 连接数据库，返回库，表
async function initDB(dbName: string = 'Excel_DataBase') {
  await init({
    dbName: dbName, // 数据库名称
    version: 1, // 版本号
    tables: [
      {
        tableName: 'Excel_table', // 表名
        option: { keyPath: 'id', autoIncrement: true }, // 指明主键为id
        indexs: [
          // 数据库索引
          {
            key: 'name',
            option: {
              unique: false
            }
          },
          // {
          //   key: 'age',
          //   option: {
          //     unique: false
          //   }
          // },
          // {
          //   key: 'hobby',
          //   option: {
          //     unique: false
          //   }
          // },
          {
            key: 'createdTime',
            option: {
              unique: false
            }
          }
        ]
      }
    ]
  })
}
// 导出json文件
const exportJson = (data: string, fileName = 'json数据.json') => {
  const blob = new Blob([data])
  const href = window.URL.createObjectURL(blob)
  const link = document.createElement('a')
  link.setAttribute('href', href)
  link.setAttribute('download', fileName)
  link.click()
  window.URL.revokeObjectURL(link.href)
}
/**
 * 函数防抖
 * @param fn 执行函数
 * @param delay 执行延迟
 * @returns 带防抖功能的函数
 */
function debounce(this: any, fn: Function, delay: number) {
  let timer: number
  return (...args: any[]) => {
    timer && window.clearTimeout(timer)
    timer = window.setTimeout(() => {
      fn.apply(this, args)
    }, delay)
  }
}

export { initDB, getInstance, exportJson, debounce }
